﻿function showStudentList(cid) {
	if (refreshTab('showStudentList' + cid)) return;
	var pageSize = 100;

	var store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : url.getStudentList
						}),
				reader : new Ext.data.JsonReader({
							root : 'result',
							totalProperty : 'total',
							id : 'sid'
						}, ['sid', 'no', 'name', 'sex'])
			});
	store.load({
				params : {
					start : 0,
					limit : pageSize,
					cid : cid
				}
			});

	var cm = new Ext.grid.ColumnModel([{
				header : '序号',
				sortable : false,
				dataIndex : 'no'
			}, {
				header : '学号',
				sortable : false,
				dataIndex : 'sid'
			}, {
				header : '姓名',
				sortable : false,
				dataIndex : 'name'
			}, {
				header : '性别',
				sortable : false,
				dataIndex : 'sex',
				renderer : sys.rd.sex
			}]);

	var sm = new Ext.grid.RowSelectionModel({
				singleSelect : true
			});
	sm.on('selectionchange', onselect);

	var toolbar = new Ext.Toolbar({
				items : [new Ext.Button({
									text : '刷新',
									iconCls : 'refresh-icon',
									handler : function() {
										store.reload();
									}
								}), new Ext.Toolbar.Separator(), new Ext.Button({
									text : '加入学生名单',
									iconCls : 'addclass-icon',
									handler : function() {
										importStudentList({
													cid : cid,
													cleanFirst : false
												});
									}
								}), new Ext.Button({
									text : '重导入学生名单',
									iconCls : 'editclass-icon',
									handler : function() {
										importStudentList({
													cid : cid,
													cleanFirst : true
												});
									}
								}), new Ext.Toolbar.Separator(), new Ext.Button({
									text : '删除学生',
									iconCls : 'delete-icon',
									disabled : true,
									handler : ondel
								}), new Ext.Button({
									text : '清空学生',
									iconCls : 'clean-icon',
									handler : function() {
										cleanStudentList({
													cid : cid,
													success : onRefresh
												});
									}
								}), new Ext.Toolbar.Separator(), new Ext.Button({
									text : '修改班级名称',
									iconCls : 'editclass-icon',
									handler : function() {
										addOrEditClass(cid);
									}
								}), new Ext.Button({
									text : '删除班级',
									iconCls : 'delclass-icon',
									handler : function() {
										deleteClass({
													cid : cid,
													success : function() {
														closeTab(grid.id);
													}
												});
									}
								})]
			});

	var pagebar = new Ext.PagingToolbar({
				pageSize : pageSize,
				store : store,
				displayInfo : true,
				emptyMsg : '当前班级没有学生。',
				displayMsg : '当前显示第 {0} - {1} 位学生，共 {2} 位学生。',
				plugins : new Ext.ux.SlidingPager()
			});

	var grid = new Ext.grid.GridPanel({
				id : 'showStudentList' + cid,
				title : '学生列表',
				iconCls : 'userlist-icon',
				closable : true,
				region : 'center',
				loadMask : {
					msg : '载入中...'
				},
				viewConfig : {
					forceFit : true
				},
				store : store,
				cm : cm,
				sm : sm,
				tbar : toolbar,
				bbar : pagebar
			});
	grid.onRefresh = onRefresh;
	addTab(grid);

	function onRefresh() {
		store.reload();
	}
	function getSelect() {
		if (sm.getCount() == 0) return null;
		return sm.getSelected();
	}
	function ondel() {
		var select = getSelect();
		if (!select) return;
		deleteStudent({
					cid : cid,
					sid : select.data.sid,
					success : onRefresh
				});
	}
	function onselect(s) {
		var sel = getSelect();
		toolbar.get(5).setDisabled(!sel);
	}
}

function deleteStudent(obj) {
	confirmx('您确定要删除学生 [' + obj.sid + '] 吗？', function() {
				ajax({
							url : url.deleteStudent,
							params : {
								cid : obj.cid,
								sid : obj.sid
							},
							success : obj.success
						});
			});
}

function cleanStudentList(obj) {
	obj = defaultx(obj, 'cid');
	confirmx('您确定要清空班级 [' + obj.cid + '] 的所有学生吗？', function() {
				ajax({
							url : url.cleanStudentList,
							params : {
								cid : obj.cid
							},
							success : obj.success
						});
			});
}

function deleteClass(obj) {
	defaultx(obj, 'cid');
	confirmx('您确定要删除班级 ' + obj.cid + ' 吗？<br />该班级的学生名单也会被一并删除！', function() {
				ajax({
							url : url.deleteClass,
							params : {
								cid : obj.cid
							},
							success : obj.success
						});
			});
}